package Test;

public class BinaryTreeIsTheSame {
    //    public static boolean isAlike(Node node1, Node node2) {
//        if (node1 != null && node2 != null) {
//            if (node1.left != null && node2.left != null) {
//                isAlike(node1.left, node2.left);
//            }
//            //这个值不等
//            if (node1.val != node2.val)
//                return false;
//
//            if (node1.right != null && node2.right != null) {
//                isAlike(node1.right, node2.right);
//            }
//        } else if (node1.left != null && node2.left == null){
//            return false;
//        }else if (node1.left == null && node2.left != null){
//            return false;
//        }
//    }


    public static void main(String[] args) {
        Node root = new Node(4);
        Node node5 = new Node(5);
        Node node6 = new Node(6);
        Node node7 = new Node(7);
        Node node8 = new Node(8);
        root.left = node5;
        root.right = node7;
        node5.left = node6;
        node5.right = node8;
        //新增加一个
        node7.left = node5;

        Node root2 = new Node(4);
        Node node55 = new Node(5);
        Node node66 = new Node(6);
        Node node77 = new Node(7);
        Node node88 = new Node(8);
        root2.left = node55;
        root2.right = node77;
        node55.left = node66;
        node55.right = node88;

        System.out.println(isAlike(root, root2));

    }

    public static boolean isAlike(Node node1, Node node2) {
        if (node1 == null && node2 == null) {//如果比到此时这两个节点都为空，证明到此时是都相同的
            return true;
        } else if (node1 != null && node2 != null) {
            //比较这个值是否相等
            if (node1.val != node2.val)
                return false;
            //左边
            if (!isAlike(node1.left, node2.left)) {
                return false;
            }
            //右边
            if (!isAlike(node1.right, node2.right)) {
                return false;
            }
            return true;
        } else {//如果是一个为空一个不为空肯定两棵二叉树就是不同的
            return false;
        }
    }
}
